¿Hay alguna diferencia entre
const foo = async () => { // some other code that uses await return await bar() }y
const foo = async () => { // some other code that uses await return bar() } Donde bar es una función que devuelve una promesa.
¿La await es redundante o hace alguna diferencia?
es redundante
Extrae el valor de la promesa devuelta por bar y luego resuelve la promesa devuelta por foo con él.
Si devuelve la promesa de bar directamente, entonces la promesa devuelta por foo la adopta con el mismo efecto.
Si se rechaza la Promesa, el error aparecerá en diferentes lugares, en los dos ejemplos que escribiste.
En el primero, ocurriría un error de rechazo dentro de foo .
En el segundo, le pasaría un error de rechazo a la función que llamó a foo
Sí.
Si la función bar() devuelve una Promesa, en el segundo caso foo devolverá una Promesa pendiente (una Promesa que aún no se ha resuelto). En el primer caso, foo devolverá los datos con los que se resolvió la Promesa después de esperar a que se resuelva la Promesa.